package com.wocai.jrt.orgadmin.investor.dao;

import java.util.List;

import com.vteba.tx.jdbc.mybatis.annotation.DaoMapper;
import com.vteba.tx.jdbc.mybatis.spi.BaseDao;
import com.wocai.jrt.orgadmin.investor.bean.EmpBreifBean;
import com.wocai.jrt.orgadmin.investor.bean.EmpGroupTreeBean;
import com.wocai.jrt.orgadmin.investor.bean.GroupBean;
import com.wocai.jrt.orgadmin.investor.bean.InvestorGroupBean;
import com.wocai.jrt.orgadmin.investor.bean.InvestorReqBean;
import com.wocai.jrt.orgadmin.investor.bean.InvestorResBean;
import com.wocai.jrt.orgadmin.investor.bean.MatchReqBean;
import com.wocai.jrt.orgadmin.investor.bean.RelationReqBean;
import com.wocai.jrt.orgadmin.investor.bean.RelationResBean;
import com.wocai.jrt.orgadmin.investor.model.Investor;
import com.wocai.jrt.orgadmin.investor.model.InvestorBean;
import com.wocai.jrt.orgadmin.stats.bean.GroupOdersReqBean;
import com.wocai.jrt.orgadmin.stats.bean.IndexStatsReqBean;

/**
 * 表investor的MyBatis Dao Mapper。 由代码工具自动生成，可以新增方法，但是不要修改自动生成的方法。
 * 
 * @date 2015-08-04 20:08:34
 */
@DaoMapper
public interface InvestorDao extends BaseDao<Investor, InvestorBean, String> {

	/**
	 * 按检索条件查询投资人
	 * 
	 * @param InvestorReqBean
	 *            reqBean
	 * @return List<Investor>
	 */
	List<Investor> queryFactor(InvestorReqBean reqBean);

	/**
	 * 获取投资人分组列表
	 * 
	 * @return List<GroupBean>
	 */
	List<GroupBean> getGroupList(GroupBean groupBean);

	/**
	 * 获取投资人列表
	 * 
	 * @param Investor
	 *            model
	 * @return List<Investor>
	 */
	List<InvestorResBean> queryMyList(Investor model);

	/**
	 * 获取联系记录列表
	 * 
	 * @param Investor
	 *            model
	 * @return List<RelationResBean>
	 */
	List<RelationResBean> queryRelation(Investor model);

	/**
	 * 获取投资人所在分组列表
	 * 
	 * @param String
	 *            id
	 * @return List<GroupBean>
	 */
	List<GroupBean> getInvestorGroupList(Investor v);

	/**
	 * 获取投资人所不在在分组列表
	 * 
	 * @param String
	 *            id
	 * @return List<GroupBean>
	 */
	List<GroupBean> getOutGroupList(Investor v);

	/**
	 * 获取机构下所有理财师
	 * 
	 * @param String
	 *            id
	 * @return List<GroupBean>
	 */
	List<EmpBreifBean> getOrgEmployeeList(MatchReqBean mBean);

	/**
	 * 给投资人分配理财师
	 * 
	 * @param MatchReqBean
	 *            matchReqBean
	 * @return boolean
	 */
	boolean allotEmp(MatchReqBean matchReqBean);

	/**
	 * 获取机构下理财师团队list
	 * 
	 * @param String
	 *            orgId
	 * @return List<EmpGroupTreeBean>
	 */
	List<EmpGroupTreeBean> getEmpGroupList(String orgId);

	/**
	 * 统计全查询的行数
	 * 
	 * @param model
	 */
	long countQueryBy(Investor model);

	/**
	 * 删除投资人所有分组
	 * 
	 * @param model
	 */
	void delInvestorGroup(Investor model);

	/**
	 * 修改投资人分组
	 * 
	 * @param List
	 *            <InvestorGroupBean> gBeans
	 */
	int addInvestorGroup(List<InvestorGroupBean> list);

	/**
	 * 更新投资人分组人数
	 * 
	 * @param String
	 *            id
	 */
	int updateInvestorGroupNum(String id);

	/**
	 * 新增联系记录
	 * 
	 * @param RelationReqBean
	 *            relationReqBean
	 * @return int
	 */
	int addRela(RelationReqBean relationReqBean);

	/**
	 * 新增投资人分组
	 * 
	 * @param GroupBean
	 *            gBean
	 * @return int
	 */
	int addGroup(GroupBean gBean);

	/**
	 * 删除投资人分组
	 * 
	 * @param GroupBean
	 *            gBean
	 * @return int
	 */
	int delGroup(GroupBean gBean);

	/**
	 * 修改投资人分组名
	 * 
	 * @param GroupBean
	 *            gBean
	 * @return JsonBean
	 */
	int modifyGroup(GroupBean gBean);

	/**
	 * 统计投资人线下订单支付总金额
	 * 
	 * @param GroupBean
	 *            gBean
	 * @return JsonBean
	 */
	Long getInvestorAsset(String id);

	/**
	 * 修改投资人信息
	 * 
	 * @param Investor
	 *            model
	 * @return int
	 */
	int updateInvestor(Investor model);

	/**
	 * 获取所有机构列表 return List
	 */
	List<String> getAllOrgIdList();

	/**
	 * 获取团队下新增的投资人
	 * @param groupOdersReqBean
	 * @return
	 */
	List<Investor> queryGroupInvestorPerformance(GroupOdersReqBean groupOdersReqBean);
	
	int yestodayCount(IndexStatsReqBean indexStatsReqBean);
	
	int turnCount(IndexStatsReqBean indexStatsReqBean);
}